﻿using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Windows.Forms;
using LarDosIdosos.Business.Model;
using LarDosIdosos.DataSources;
using System.IO;
using Button = System.Web.UI.WebControls.Button;

namespace LarDosIdosos
{
    public partial class Idosos : System.Web.UI.Page
    {
        private Business.Model.Funcionario funcionario;
        private const string Acesso = "acesso";
        private const string Editar = "editar";

        protected void Page_Load(object sender, EventArgs e)
        {
            CarregaFuncionario();
            if(!ValidaPermissao("acesso"))
            {
                Response.Redirect("~/Default.aspx");
            }
            CarregaBotoesDeCadastro();
        }

        private void CarregaBotoesDeCadastro()
        {
            buttonCadastrar.Visible = ValidaPermissao(Editar);
        }

        private void CarregaFuncionario()
        {
            if (Session["usuario"] != null)
            {
                funcionario = (Business.Model.Funcionario) Session["usuario"];
            }
        }

        //Note: Valida a permissão do funcionário
        private bool ValidaPermissao(string tipo)
        {
            if (funcionario != null)
            {
                switch (tipo)
                {
                    case Acesso:
                        if (funcionario.Cargo_Funcionario.CodigoCargo == 2 ||
                            funcionario.Cargo_Funcionario.CodigoCargo == 4 ||
                            funcionario.Cargo_Funcionario.CodigoCargo == 5)
                        {
                            return true;
                        }
                        break;
                    case Editar:
                        if (funcionario.Cargo_Funcionario.CodigoCargo == 2)
                        {
                            return true;
                        }
                        break;
                }
            }
            return false;
        }

        protected void gridViewIdosos_DataBound(object sender, EventArgs e)
        {
            
        }

        protected void gridViewIdosos_OnRowDataBound(object sender, GridViewRowEventArgs e)
        {
            if(e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton editar = (ImageButton)e.Row.FindControl("imageButtonEditar");
                ImageButton excluir = (ImageButton)e.Row.FindControl("imageButtonExcluir");
                editar.Visible = excluir.Visible = ValidaPermissao(Editar);
                Idoso idoso = (Idoso) e.Row.DataItem;
                if(idoso.Relatorio_De_Encaminhamento == "")
                {
                    ImageButton imageButton =
                        (ImageButton) e.Row.FindControl("imageButtonBaixarRelatorioDeEncaminhamento");
                    imageButton.Visible = false;
                }
            }
        }

        protected void gridViewIdosos_OnSorted(object sender, EventArgs e)
        {
            
        }

        protected void gridViewIdosos_OnPageIndexChanged(object sender, EventArgs e)
        {
            
        }

        protected void ddPageSize_SelectedIndexChanged(object sender, EventArgs e)
        {
            
        }

        protected void gridViewIdosos_OnRowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "visualizar")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = gridViewIdosos.Rows[index];
                HiddenField hiddenField = (HiddenField) row.FindControl("hiddenFieldId");
                if(hiddenField != null) MontaPaginaComDetalhesDoIdoso(Convert.ToInt32(hiddenField.Value), false);

            }
            if (e.CommandName == "editar")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = gridViewIdosos.Rows[index];
                HiddenField hiddenField = (HiddenField)row.FindControl("hiddenFieldId");
                if (hiddenField != null)
                    Response.Redirect(string.Format("~/CadastroDoIdoso.aspx?Alterar={0}&Alterado={1}", true, hiddenField.Value));
                
            }
            if (e.CommandName == "excluir")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = gridViewIdosos.Rows[index];
                HiddenField hiddenField = (HiddenField)row.FindControl("hiddenFieldId");
                if (hiddenField != null) ExcluiRegistro(Convert.ToInt32(hiddenField.Value));

            }
        }

        private void ExcluiRegistro(int Codigo_Idoso)
        {
//            var result = MessageBox.Show("Deseja excluir?","Excluindo",MessageBoxButtons.YesNo, MessageBoxIcon.Question,MessageBoxDefaultButton.Button2,MessageBoxOptions.DefaultDesktopOnly,false);
//            if(result == DialogResult.Yes)
//            {
//                DataSourceIdoso dataSource = new DataSourceIdoso();
//                dataSource.DeleteIdoso(Codigo_Idoso);
//
//                gridViewIdosos.DataBind();
//            }
			
			DataSourceIdoso dataSource = new DataSourceIdoso();
            dataSource.DeleteIdoso(Codigo_Idoso);
			dataSource.DeleteResponsaveisDoIdoso(Codigo_Idoso);
            gridViewIdosos.DataBind();
        }

        private void MontaPaginaComDetalhesDoIdoso(int Codigo, bool habilita)
        {
            DataSourceIdoso dataSource = new DataSourceIdoso();
            Idoso idoso = dataSource.BuscaIdoso(Codigo);
            webUserControlIdoso.CarregaVisualizacaoDoIdoso(idoso, habilita);
            panelIdosos.Visible = false;
            panelVisualizarIdoso.Visible = true;
        }

        protected void linkButtonVoltar_OnClick(object sender, EventArgs e)
        {
			webUserControlIdoso.LimpaControles();
            panelIdosos.Visible = true;
            panelVisualizarIdoso.Visible = false;
            gridViewIdosos.DataBind();
        }

        protected void buttonCadastrar_OnClick(object sender, EventArgs e)
        {
            //webUserControlIdoso.CarregaTelaDeCadastrarIdoso();
            //panelVisualizarIdoso.Visible = true;
            //panelIdosos.Visible = false;
            Response.Redirect(string.Format("~/CadastroDoIdoso.aspx"));
        }

        protected void imageButtonBaixarRelatorioDeEncaminhamento_OnClick(object sender, ImageClickEventArgs e)
        {
            
        }

        protected void buttonConsulta_OnClick(object sender, ImageClickEventArgs e)
        {
            string busca = textBoxConsulta.Text;
            dataSourceIdosos.SelectParameters.Clear();
            Parameter param = new Parameter();
            param.Name = "sql"; if (busca != "")
            {
                param.DefaultValue = "select * from idoso where nome_idoso like '%" + busca + "%'";
            }
            else
            {
                param.DefaultValue = "select * from idoso";
            }
            dataSourceIdosos.SelectParameters.Add(param);
            //dataSourceResponsavel.SelectParameters.Add(
            //List<Business.Model.Responsavel> responsaveis = dataSourceResponsavel.BuscaResponsaveis(0,10,"","select * from responsavel where nome_responsavel like '%" + busca + "%'");
            GridView grid = (GridView)dataSourceIdosos.FindControl("gridViewIdosos");
            grid.DataBind();
        }
    }
}